/*
    贪心经典题目专题1
    
    前置知识: 
    讲解005、042 - 对数器
    讲解025、026、027 - 基础排序、有序表、比较器、堆结构

    狭义的贪心
    每一步都做出在当前状态下最好或最优的选择，从而希望最终的结果是最好或最优的算法

    广义的贪心
    通过分析题目自身的特点和性质，只要发现让求解答案的过程得到加速的结论，都算广义的贪心

    贪心是最符合自然智慧的思想，一般分析门槛不高
    理解基本的排序、有序结构，有基本的逻辑思维就能理解
    但是贪心的题目，千题千面，极难把握
    难度在于证明局部最优可以得到全局最优，好在！我们有对数器！贪心专题2、3，这两节大量使用对数器

    ================================================

    有关贪心的若干现实 & 提醒
    1，不要去纠结严格证明，每个题都去追求严格证明，浪费时间、收益很低，而且千题千面。玄学！
    2，一定要掌握用对数器验证的技巧，这是解决贪心问题的关键
    3，解法几乎只包含贪心思路的题目，代码量都不大
    4，大量累积贪心的经验，重点不是证明，而是题目的特征，以及贪心方式的特征，做好总结方便借鉴
    5，关注题目数据量，题目的解可能来自贪心，也很可能不是，如果数据量允许，能不用贪心就不用（稳）
    6，贪心在笔试中出现概率不低，但是面试中出现概率较低，原因是 淘汰率 vs 区分度
    7，广义的贪心无所不在，可能和别的思路结合，一般都可以通过自然智慧想明白，依然不纠结证明

    ================================================

    题目1
    最大数
    给定一组非负整数nums
    重新排列每个数的顺序（每个数不可拆分）使之组成一个最大的整数
    测试链接 : https://leetcode.cn/problems/largest-number/

    ================================================

    题目2
    两地调度
    公司计划面试2n个人，给定一个数组 costs
    其中costs[i]=[aCosti, bCosti]
    表示第i人飞往a市的费用为aCosti，飞往b市的费用为bCosti
    返回将每个人都飞到a、b中某座城市的最低费用
    要求每个城市都有n人抵达
    测试链接 : https://leetcode.cn/problems/two-city-scheduling/

    ================================================

    题目3
    吃掉N个橘子的最少天数
    厨房里总共有 n 个橘子，你决定每一天选择如下方式之一吃这些橘子
    1）吃掉一个橘子
    2）如果剩余橘子数 n 能被 2 整除，那么你可以吃掉 n/2 个橘子
    3）如果剩余橘子数 n 能被 3 整除，那么你可以吃掉 2*(n/3) 个橘子
    每天你只能从以上 3 种方案中选择一种方案
    请你返回吃掉所有 n 个橘子的最少天数
    测试链接 : https://leetcode.cn/problems/minimum-number-of-days-to-eat-n-oranges/

    ================================================

    题目4
    会议室II
    给你一个会议时间安排的数组 intervals
    每个会议时间都会包括开始和结束的时间intervals[i]=[starti, endi]
    返回所需会议室的最小数量
    测试链接 : https://leetcode.cn/problems/meeting-rooms-ii/
    这题就是讲解027，题目2，最多线段重合问题
    测试链接 : https://www.nowcoder.com/practice/1ae8d0b6bb4e4bcdbf64ec491f63fc37

    ================================================

    题目5
    课程表III
    这里有n门不同的在线课程，按从1到n编号
    给你一个数组courses
    其中courses[i]=[durationi, lastDayi]表示第i门课将会持续上durationi天课
    并且必须在不晚于lastDayi的时候完成
    你的学期从第 1 天开始
    且不能同时修读两门及两门以上的课程
    返回你最多可以修读的课程数目
    测试链接 : https://leetcode.cn/problems/course-schedule-iii/

    ================================================

    题目6
    连接棒材的最低费用
    你有一些长度为正整数的棍子
    这些长度以数组sticks的形式给出
    sticks[i]是第i个木棍的长度
    你可以通过支付x+y的成本将任意两个长度为x和y的棍子连接成一个棍子
    你必须连接所有的棍子，直到剩下一个棍子
    返回以这种方式将所有给定的棍子连接成一个棍子的最小成本
    测试链接 : https://leetcode.cn/problems/minimum-cost-to-connect-sticks/
    测试链接 : https://www.luogu.com.cn/problem/P1090

*/